<?php

namespace App\Containers\AppSection\Confirmation\Models;

use App\Containers\AppSection\Type\Models\Type;
use App\Ship\Parents\Models\Model;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

/**
 * Подтверждение
 *
 * @property int $id Id
 * @property string $request_type Тип запроса
 * @property string $confirm_type Тип подтверждения
 * @property int $code Код подтверждения
 * @property string $value Кому отправлено подтверждение
 * @property Carbon $created_at Время создания
 * @property Carbon $updated_at Время обновления
 *
 * @property Type $request Тип запроса
 * @property Type $confirm Тип подтверждения
 */
class Confirmation extends Model
{
    protected $fillable = [
        'request_type',
        'confirm_type',
        'code',
        'value',
    ];

    protected $hidden = [
        'code'
    ];

    protected $dates = [
        'created_at',
        'updated_at',
    ];

    /**
     * A resource key to be used in the serialized responses.
     */
    protected string $resourceKey = 'Confirmation';

    /**
     * Тип запроса
     * @return BelongsTo Type
     */
    public function request(): BelongsTo
    {
        return $this->belongsTo(Type::class, 'request_type', 'key');
    }

    /**
     * Тип подтверждения
     * @return BelongsTo Type
     */
    public function confirm(): BelongsTo
    {
        return $this->belongsTo(Type::class, 'confirm_type', 'key');
    }
}
